package com.qjc.demo.algorithm;

/**
 * @ClassName: ArrangeCoin
 * @Description: 总共有N枚硬币，将它们摆成一个阶梯形状，第K行就必须有K枚硬币。
 * 给定一个数字n，找出可形成完整阶梯行的总行数。例如：
 * O
 * O    O
 * O   O
 * 5枚硬币，就应该返回2；6枚硬币返回3；7枚硬币返回3
 * @Author: qjc
 * @Date: 2022/5/6 10:54 AM
 */
public class ArrangeCoin {

    // 迭代法：普通解法
    public static int normal(int n) {
        // i既代表行数也代表改行放的个数
        for (int i = 1; i <= n; i++) {
            // 放完i个之后，要从总数中减去，然后剩下的继续赋值给总数
            n = n - i;
            if (n <= i) {
                // 当剩下的总数小于或者等于改行的数量i时，就代表已经放完了
                return i;
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        System.out.println(normal(10));
    }

}
